﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Arcadium.GameEntities
{
    abstract class GameEntity
    {
        // MOR ÅT GRÖT
        // FAR ÅT HELVETE

        #region Properties

        public World World { get; private set; }

        #endregion

        #region Initialization

        /// <summary>
        /// 
        /// </summary>
        /// <param name="world"></param>
        public GameEntity(World world)
        {
            this.World = world;
        }

        #endregion

        #region Update, Draw

        /// <summary>
        /// Updates the entity itself and returns value only for itself.
        /// If the entity (or any entity deriving from it) has any sub entities, 
        /// call base.Update(), so for this should be call always somehow
        /// </summary>
        /// <param name="gameTime"></param>
        /// <returns>true if the item should be gone in some way</returns>
        public virtual bool Update(GameTime gameTime) { return false; }

        public virtual void Draw(SpriteBatch spriteBatch) { }

        #endregion
    }
}
